import { IPSBIScheme } from './ipsbischeme';
import { IPSSysBIAggTable } from './ipssys-biagg-table';
import { IPSSysBICube } from './ipssys-bicube';
import { IPSSysBIDimension } from './ipssys-bidimension';
import { IPSSysSFPlugin } from '../res/ipssys-sfplugin';
import { IPSSystemModule } from '../system/ipssystem-module';

/**
 *
 * @export
 * @interface IPSSysBIScheme
 */
export interface IPSSysBIScheme extends IPSBIScheme {
  /**
   * 智能报表聚合数据表集合
   *
   * @type {IPSSysBIAggTable[]}
   */
  getAllPSSysBIAggTables(): IPSSysBIAggTable[] | null;

  /**
   * 智能报表聚合数据表集合
   *
   * @type {IPSSysBIAggTable[]}
   */
  get allPSSysBIAggTables(): IPSSysBIAggTable[] | null;

  findPSSysBIAggTable(objKey: any): IPSSysBIAggTable | null;

  /**
   * 智能报表立方体集合
   *
   * @type {IPSSysBICube[]}
   */
  getAllPSSysBICubes(): IPSSysBICube[] | null;

  /**
   * 智能报表立方体集合
   *
   * @type {IPSSysBICube[]}
   */
  get allPSSysBICubes(): IPSSysBICube[] | null;

  findPSSysBICube(objKey: any): IPSSysBICube | null;

  /**
   * 智能报表维度集合
   *
   * @type {IPSSysBIDimension[]}
   */
  getAllPSSysBIDimensions(): IPSSysBIDimension[] | null;

  /**
   * 智能报表维度集合
   *
   * @type {IPSSysBIDimension[]}
   */
  get allPSSysBIDimensions(): IPSSysBIDimension[] | null;

  findPSSysBIDimension(objKey: any): IPSSysBIDimension | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  get psSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块（必须存在）
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModuleMust(): IPSSystemModule;
}
